package leetcode.day;

import java.util.ArrayList;
import java.util.List;

// 89. 格雷编码
public class GrayCode {
    public static void main(String[] args) {
        System.out.println(grayCode(3));
    }

    public static List<Integer> grayCode(int n) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < 1 << n; i++) {
            list.add(gray(i));
        }
        return list;
    }

    // 格雷码公式
    private static Integer gray(int n) {
        return n ^ (n >> 1);
    }
}
